<?php

/**
 * Abstrakte Basisklasse für Aufzählungen.
 * Konkrete Aufzählungstypen definieren die Aufzählungselemente als
 * Konstanten mit paarweise verschiedenen ganzzahligen Werten als Schlüssel.
 * @author mroesler
 * @access public
 */
abstract class Enum
{
    /**
     * Gesetzter Schlüssel des Objekts.
     * @AttributeType int
	 */
	protected $_key;

	/**
	 * Setze Schlüssel des Objekts auf angegebenen Wert.
	 * Diese Methode sollte nur vom Konstruktor eines konkreten Aufzählungstyps
	 * aufgerufen werden. Der übergebene Wert wird nicht auf Zulässigkeit
	 * überprüft. Daher wird empfohlen, diese Überprüfung im Konstruktor
	 * des konkreten Aufzählungstyps durchzuführen.
	 * @access public
	 * @param int key
	 * @ParamType key int
	 */
	protected final function set($key) {
		$this->_key = $key;
	}

	/**
	 * Gib Schlüssel des Objekts zur�ck.
	 * @access public
	 * @return int
	 * @ReturnType int
	 */
	public final function key() {
		return $this->_key;
	}
}
?>